//package com.jxj.study.util.ImageTests;
//
//import javax.swing.*;
//import javax.imageio.ImageIO;
//import java.awt.*;
//import java.awt.event.*;
//import java.awt.image.BufferedImage;
//import java.io.*;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.List;
//
//public class ImageProcessor extends JFrame {
//    private BufferedImage currentImage;      // 当前显示的图片
//    private JLabel imageLabel;      // 当前显示的图片
//    private ImageViewerPanel centerPanel;
//    private JTextArea textArea;
//    private final List<File> imageFiles = new ArrayList<>();
//    private int currentIndex = -1;
//    private File currentFolder;
//    private JLabel statusLabel;
//
//    public ImageProcessor() {
//        initUI();
//    }
//
//    private void initUI() {
//        setTitle("Image Processor");
//        setDefaultCloseOperation(EXIT_ON_CLOSE);
//        setSize(1200, 800);
//        setLayout(new BorderLayout(5, 5));
//
//        // 状态栏
//        statusLabel = new JLabel("就绪");
//        statusLabel.setBorder(BorderFactory.createEtchedBorder());
//        add(statusLabel, BorderLayout.SOUTH);
//
//        // 绘制图片
//        imageLabel = new JLabel() {
//            @Override
//            protected void paintComponent(Graphics g) {
////                super.paintComponent(g);
//                // 绘制图片
//                if (currentImage != null) {
//                    g.drawImage(currentImage, 0, 0, this);
//                }
//            }
//        };
//        //左侧缩略图面板
//        JScrollPane leftScroll = new JScrollPane(imageLabel);
//        leftScroll.setPreferredSize(new Dimension(200, 0));
//        add(leftScroll, BorderLayout.WEST);
//
//        // 中间操作面板
//        centerPanel = new ImageViewerPanel();
//        add(centerPanel, BorderLayout.CENTER);
//
//        // 右侧文本面板
//        textArea = new JTextArea();
//        JScrollPane rightScroll = new JScrollPane(textArea);
//        rightScroll.setPreferredSize(new Dimension(300, 0));
//        add(rightScroll, BorderLayout.EAST);
//
//        // 顶部工具栏
//        JToolBar toolBar = new JToolBar();
//        JButton openBtn = new JButton("打开文件夹");
//        // 图片切换按钮
//        JButton prevBtn = new JButton("上一张 (←)");
//        JButton nextBtn = new JButton("下一张 (→)");
//
//        openBtn.addActionListener(e -> openFolder());
//        prevBtn.addActionListener(e -> prevImage());
//        nextBtn.addActionListener(e -> nextImage());
//
//        toolBar.add(openBtn);
//        toolBar.add(prevBtn);
//        toolBar.add(nextBtn);
//        add(toolBar, BorderLayout.NORTH);
//    }
//
//    private void openFolder() {
//        JFileChooser chooser = new JFileChooser();
//        chooser.setDialogTitle("选择图片文件夹");
//        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//        if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
//            currentFolder = chooser.getSelectedFile();
//            loadImages();
//        }
//    }
//
//    private void loadImages() {
//        imageFiles.clear();
//        File[] files = currentFolder.listFiles(file -> {
//            String name = file.getName().toLowerCase();
//            return name.matches(".*\\.(jpg|png|jpeg|bmp)");
//        });
//
//        if (files != null) {
//            imageFiles.addAll(Arrays.asList(files));
//            showImage(0);
//            if (!imageFiles.isEmpty()) {
//                currentIndex = 0;
//                showImage(currentIndex);
//            }
//        }
//        updateStatus(String.format("已加载 %d 张图片", imageFiles.size()));
//    }
//
////    private void updateLeftPanel() {
////        leftPanel.removeAll();
////        for (File file : imageFiles) {
////            ImageIcon thumbnail = createThumbnail(file);
////            JLabel label = new JLabel(thumbnail);
////            label.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
////            label.addMouseListener(new MouseAdapter() {
////                @Override
////                public void mouseClicked(MouseEvent e) {
////                    int index = imageFiles.indexOf(file);
////                    if (index != currentIndex) {
////                        saveCurrentText();
////                        currentIndex = index;
////                        showImage(currentIndex);
////                    }
////                }
////            });
////            leftPanel.add(label);
////        }
////        leftPanel.revalidate();
////        leftPanel.repaint();
////    }
////
////    private ImageIcon createThumbnail(File file) {
////        try {
////            BufferedImage img = ImageIO.read(file);
////            int maxSize = 150;
////            double ratio = Math.min((double)maxSize/img.getWidth(), (double)maxSize/img.getHeight());
////            int w = (int)(img.getWidth() * ratio);
////            int h = (int)(img.getHeight() * ratio);
////            return new ImageIcon(img.getScaledInstance(w, h, Image.SCALE_SMOOTH));
////        } catch (IOException e) {
////            return new ImageIcon();
////        }
////    }
//
//    private void showImage(int index) {
//        try {
//            BufferedImage image = ImageIO.read(imageFiles.get(index));
//            currentImage = image;
//            imageLabel.setIcon(new ImageIcon(image));
//            centerPanel.setImage(currentImage);
//            textArea.setText("");
//        } catch (IOException e) {
//            JOptionPane.showMessageDialog(this, "无法加载图片");
//        }
//    }
//
//    private void nextImage() {
//        if (currentIndex < imageFiles.size() - 1) {
//            saveCurrentText();
//            currentIndex++;
//            showImage(currentIndex);
//        }
//    }
//
//    private void saveCurrentText() {
//        if (currentIndex == -1 || textArea.getText().isEmpty()) return;
//
//        String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
//        File saveDir = new File(currentFolder, date);
//        if (!saveDir.exists() && !saveDir.mkdir()) {
//            JOptionPane.showMessageDialog(this, "无法创建保存目录");
//            return;
//        }
//
//        try (FileWriter writer = new FileWriter(new File(saveDir,
//                imageFiles.get(currentIndex).getName() + ".txt"))) {
//            writer.write(textArea.getText());
//        } catch (IOException e) {
//            JOptionPane.showMessageDialog(this, "保存失败");
//        }
//    }
//
//    class ImageViewerPanel extends JPanel {
//        private BufferedImage image;
//        private double scale = 1.0;
//        private Point startPoint;
//        private Rectangle selection;
//
//        public void setImage(BufferedImage image) {
//            this.image = image;
//            scale = 1.0;
//            selection = null;
//            repaint();
//        }
//
//        @Override
//        protected void paintComponent(Graphics g) {
//            super.paintComponent(g);
//            if (image != null) {
//                Graphics2D g2 = (Graphics2D)g;
//                g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
//                                  RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//                int w = (int)(image.getWidth() * scale);
//                int h = (int)(image.getHeight() * scale);
//                g2.drawImage(image, 0, 0, w, h, null);
//
//                if (selection != null) {
//                    g2.setColor(Color.RED);
//                    g2.drawRect(selection.x, selection.y,
//                               selection.width, selection.height);
//                }
//            }
//        }
//
//        public ImageViewerPanel() {
//            setPreferredSize(new Dimension(600, 600));
//            addMouseListener(new MouseAdapter() {
//                @Override
//                public void mousePressed(MouseEvent e) {
//                    startPoint = e.getPoint();
//                    selection = null;
//                }
//
//                @Override
//                public void mouseReleased(MouseEvent e) {
//                    if (selection != null) {
//                        BufferedImage sub = getSelectedImage();
//                        textArea.append(fakeOCR(sub) + "\n");
//                    }
//                    startPoint = null;
//                    selection = null;
////                    repaint();
//                }
//            });
//
//            addMouseMotionListener(new MouseAdapter() {
//                @Override
//                public void mouseDragged(MouseEvent e) {
//                    if (startPoint != null) {
//                        Point endPoint = e.getPoint();
//                        int x = Math.min(startPoint.x, endPoint.x);
//                        int y = Math.min(startPoint.y, endPoint.y);
//                        int w = Math.abs(endPoint.x - startPoint.x);
//                        int h = Math.abs(endPoint.y - startPoint.y);
//                        selection = new Rectangle(x, y, w, h);
//                        repaint();
//                    }
//                }
//            });
//
//            addMouseWheelListener(e -> {
//                int rotation = e.getWheelRotation();
//                scale *= rotation < 0 ? 1.1 : 0.9;
//                scale = Math.max(0.1, Math.min(10.0, scale));
//                repaint();
//            });
//        }
//
//        private BufferedImage getSelectedImage() {
//            if (selection == null || image == null) return null;
//
//            int x = (int)(selection.x / scale);
//            int y = (int)(selection.y / scale);
//            int w = (int)(selection.width / scale);
//            int h = (int)(selection.height / scale);
//
//            x = Math.max(0, Math.min(x, image.getWidth()));
//            y = Math.max(0, Math.min(y, image.getHeight()));
//            w = Math.max(0, Math.min(w, image.getWidth() - x));
//            h = Math.max(0, Math.min(h, image.getHeight() - y));
//
//            return image.getSubimage(x, y, w, h);
//        }
//
//        private String fakeOCR(BufferedImage image) {
//            if (image == null) {
//                return "";
//            }
//            return String.format("[识别结果 %tT]\n模拟文字内容：ABCD1234\n%d", new Date(),image.getMinY());
//        }
//    }
//
//    /**
//     * 显示上一张图片
//     */
//    private void prevImage() {
//        if (currentIndex > 0) {
//            currentIndex--;
//            showImage(currentIndex);
//        } else {
//            updateStatus("已经是第一张图片");
//        }
//    }
//
//    /**
//     * 更新状态栏信息
//     * @param message 状态信息
//     */
//    private void updateStatus(String message) {
//        statusLabel.setText(message);
//    }
//
//    public static void main(String[] args) {
//        EventQueue.invokeLater(() -> {
//            ImageProcessor app = new ImageProcessor();
//            app.setVisible(true);
//        });
//    }
//}